package algorithm.EatMonster;

/*
int[] d, i号怪兽的能力
int[] p, i好怪兽的价格
开始时你的能力是0，你的目标是从0号怪兽开始，通过所有的怪兽

如果你的当前能力，小于i号怪兽的能力，你必须付出p[i]的钱，贿赂这个怪兽，然后这个怪兽会加入你，你的能力直接累加上他的能力。
如果你的当前能力，大于i好怪兽的能力，你可以选择直接通过，你的能力不会下降，你也可以选择贿赂。
返回通过所有怪兽，需要花费的最小钱数
 */
public class EatMonster {
    public static int getMin(int[] d, int[] p) {
        return process(0, 0, d, p, 0);
    }

    //dp[i][j]
    public static int dp(int[] d, int[] p) {

return 0;
    }


    public static int process(int i, int j, int[] d, int[] p, int cost) {
        if (i == d.length) {
            return cost;
        }

        if (j < d[i]) {
            return process(i+1, j + d[i], d, p, cost + p[i]);
        } else {
            int p1 = process(i+1, j, d, p, cost);
            int p2 = process(i+1, j+d[i], d, p, cost+p[i]);
            return Math.min(p1, p2);
        }
    }

    public static void main(String[] args) {

    }
}